home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-06-17 | 2.6 KB | 118 lines | [TEXT/????] |
- #!/usr/bin/perl
-
- #20020520.1
-
- #goal of this check:
- #we'd like to display a error message appropriate is the root volume doesn't have
- #an adequate system. I was not able to make this test during the "InstallCheck" script,
- #so here we'll let all other disk than the root volume without any error, and check the system version only for the root disk
-
-
- $RootVolName = "/";
- $VolName = "$ARGV[0]";
- $EXIT_VALUE = 0;
- $MIN_SYSTEM_VERS = "10.1.1";
-
- #open (LOGFILE, ">>/Users/jlavanch/Desktop/PkgTest.log");
-
- ($sec, $min, $hour, $mday, $mon, $year, $wday, $ydat, $isdst) = localtime();
-
- #print LOGFILE ("$hour:$min:$sec $year-$mon-$mday > ");
- #print LOGFILE ("volume checking $VolName \n");
-
-
- if ($VolName eq $RootVolName) {
- # print LOGFILE ("$VolName is equal to $RootVolName\n");
- my $TARGET_VOLUME = "$ARGV[0]";
- my $SYSVERS = "$TARGET_VOLUME"."/System/Library/CoreServices/SystemVersion.plist";
- # print LOGFILE ("Sysver is in file $SYSVERS\n");
-
- # If system version is Not Greater than minmal required version, show error
- if(!CheckVersion( "$SYSVERS", $MIN_SYSTEM_VERS, "ProductVersion", ">" ))
- {
- # print LOGFILE ("Sysver is lower than $MIN_SYSTEM_VERS\n");
- $EXITVALUE = (( 1 << 5 ) | 17);
- }
- else {
- # print LOGFILE ("Sysver is greater than or equal to $MIN_SYSTEM_VERS\n");
- }
-
-
- } else {
- # print LOGFILE ("$VolName is NOT equal to $RootVolName\n");
- }
-
-
- exit( $EXITVALUE );
-
- sub CheckVersion
- {
- my $path = $_[0];
- my $version = $_[1];
- my $keyName = $_[2];
- my $operator = $_[3];
-
- if (! -e $path) {
- return 0;
- }
-
- if (!$operator) {
- $operator = "==";
- }
-
- my $oldSeperator = $/;
- $/ = \0;
-
- open( PLIST, "$path") || do {
- return 0;
- };
-
- $plistData = <PLIST>;
- $plistData =~ /<dict>(.*?)<\/dict>/gis;
-
- @items = split(/<key>/, $plistData);
-
- shift @items;
- foreach $item (@items) {
- $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
- $versiondata{ $1 } = $2;
- }
-
- close(PLIST);
-
- $/ = $oldSeperator;
-
- @theVersionArray = split(/\./, $versiondata{$keyName});
- for ($i = 0; $i < 3; $i++) {
- if(!$theVersionArray[$i]) {
- $theVersionArray[$i] = '0';
- }
- }
-
- @versionArray = split(/\./, $version);
-
- my $actualVersion;
-
- for ($i = 0; $i < 3; $i++) {
- if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
-
- $actualVersion = $theVersionArray[$i];
- $version = $versionArray[$i];
-
- last;
- }
- }
-
- my $expression = '$actualVersion ' . $operator . ' $version';
- if( eval ($expression) )
- {
- return 1;
- }
- else
- {
- return 0;
- }
-
- }
-
-